# 初始化 Flask 应用和配置扩展

from flask import Flask

app = Flask(__name__, template_folder="../tmpl")

# 应用工厂是一个 Python 函数，用于创建和配置 Flask 应用实例。
# 这种方法允许你创建多个应用实例，或者在不同配置下初始化应用。
def create_app():
    # 将 Config 类中的配置项加载到应用配置中
    # 这里会去加载上级目录config.py中的Config类，主要是Flask的目录结构默认约定.
    app.config.from_object('config.Config')

    from . import routes
    app.register_blueprint(routes.bp)

    from . import models
    # 引入模块会执行对应代码生成sqlite数据库
    # 使用Config中SQLALCHEMY_DATABASE_URI为名称，在主目录下生成 instance/mytest.db
    # 需要放在Config调协好后
    models.init_db()

    return app


